home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / utils / nroff~06.zoo / tmac.zoo / tmac.s < prev   
Text File  |  1992-07-03  |  18KB  |  831 lines

  1. .\" @(*) tmac.s 1.10p5 91/2/24 rosenkra
  2. .\" **************************************************************************
  3. .\" partial -ms package for nroff. macros for simple paper/report formats
  4. .\"
  5. .\" usage:        nroff -ms file [...]
  6. .\" installed path:    c:\lib\tmac\tmac.s (TMACDIR)
  7. .\" user macros:    TL, AU, AI, AB, AE, SH, NH, PP, LP, QP, XP, RS, RE,
  8. .\"            IP, I, B, R, IR, RI, BR, RB, IB, BI, XS, XA, XE
  9. .\" extensions:        TI, EX
  10. .\" no-ops:        PX
  11. .\" debuging:        }D
  12. .\" internal macros:    }R
  13. .\" strings used:    Q, U, -, CR, LF, RF, DW, MO, Dy, Da, Yr, dY, DY, TM,
  14. .\"            DA, CT, Xx
  15. .\" registers used:    A, B, C, D, E, F, G, H, I, J, K, M, O, P, Q, R, X, Z
  16. .\" bugs:        many features not implemented.
  17. .\"            IP does not place short tags on same line.
  18. .\"            table of contents stuff (XS,XA,XE,PX) kludgy.
  19. .\" author:        rosenkra@convex.com (Bill Rosenkranz)
  20. .\" version:        for ST nroff v1.10p5
  21. .\" date:        91/2/24 
  22. .\" restrictions:    none. freely distributable (no copyright, etc.)
  23. .\" **************************************************************************
  24. .\"
  25. .\" control
  26. .\"
  27. .\" set this >0 to turn on debugging
  28. .nr Z 0
  29. .\" set M>0 for use with manpager(1), and then N>0 if SH and TL are to be bold
  30. .nr M 1
  31. .nr N 1
  32. .\" set O>1 for page offset and line width oriented toward screen viewing
  33. .nr O 1
  34. .\" 
  35. .\" **************************************************************************
  36. .\"
  37. .\" some predefined strings (Quote, Unquote, dash, footer parts, etc):
  38. .\"
  39. .if \nM=0 \{\
  40. .    ds ' "'
  41. .    ds ` "'
  42. .    ds Q ""
  43. .    ds U ""
  44. .    ds - "--
  45. \}
  46. .if \nM>0 \{\
  47. .    ds ' "'
  48. .    ds ` "`
  49. .    ds Q "!
  50. .    ds U ""
  51. .\"    ds - "-
  52. .    ds - "å
  53. \}
  54. .ds CF "ImPoSsIbLe
  55. .ds LF "\0
  56. .ds RF "\0
  57. .\"
  58. .\" these are various predefined date and time strings
  59. .\"
  60. .\" DW day-of-week:
  61. .if \n(dw=1  .ds DW "Sun
  62. .if \n(dw=2  .ds DW "Mon
  63. .if \n(dw=3  .ds DW "Tue
  64. .if \n(dw=4  .ds DW "Wed
  65. .if \n(dw=5  .ds DW "Thu
  66. .if \n(dw=6  .ds DW "Fri
  67. .if \n(dw=7  .ds DW "Sat
  68. .\" MO month:
  69. .if \n(mo=1  .ds MO "January
  70. .if \n(mo=2  .ds MO "February
  71. .if \n(mo=3  .ds MO "March
  72. .if \n(mo=4  .ds MO "April
  73. .if \n(mo=5  .ds MO "May
  74. .if \n(mo=6  .ds MO "June
  75. .if \n(mo=7  .ds MO "July
  76. .if \n(mo=8  .ds MO "August
  77. .if \n(mo=9  .ds MO "September
  78. .if \n(mo=10 .ds MO "October
  79. .if \n(mo=11 .ds MO "November
  80. .if \n(mo=12 .ds MO "December
  81. .\" make some composites:
  82. .ds Dy "\*(MO \n(dy
  83. .ds Da "\n(hh:\n(mm:\n(ss \n(mo/\n(dy/\n(yr
  84. .ds Yr "19\n(yr
  85. .ds dY "\*(Dy, \*(Yr
  86. .ds DY "\n(dy \*(MO \*(Yr
  87. .ds TM "\n(hh:\n(mm:\n(ss
  88. .ds DA "\*(TM \*(DY
  89. .ds CT "\*(DW \*(Dy \*(TM 19\n(yr
  90. .\"
  91. .\" they look like this:
  92. .\"
  93. .\"    DW    Sun
  94. .\"    MO    March
  95. .\"     Dy    March 4
  96. .\"     dY    March 4, 1990
  97. .\"     DY    4 March 1990       <--- "normal" nroff form
  98. .\"    Yr    1990
  99. .\"     TM    16:34:00
  100. .\"     DA    16:34:00 March 4, 1990
  101. .\"    Da    16:34:00 2/4/90
  102. .\"     CT    Sun March 4 16:34:00 1990    almost like ctime(2)
  103. .\"
  104. .\" **************************************************************************
  105. .\"
  106. .\" startup stuff...
  107. .\"
  108. .if \nO>0 .po 0.8i
  109. .pl 66
  110. .if \nO=0 \{\
  111. .    ll 6.0i
  112. .    lt 6.0i
  113. \}
  114. .if \nO>0 \{\
  115. .    ll 6.4i
  116. .    lt 6.4i
  117. \}
  118. .m1 3
  119. .m2 2
  120. .m3 3
  121. .m4 3
  122. .\" no header line on first page! (set back in AB, SH, NH, LP, PP, QP)
  123. .tl ||||
  124. .\" this is the default footer (date, centered) unless string CF is defined
  125. .fo ||\*(DY||
  126. .\" these are for NH numbering (up to 5 levels, a la sun, X holds level)
  127. .nr A 0 1
  128. .af A 1
  129. .nr B 0 1
  130. .af B 1
  131. .nr C 0 1
  132. .af C 1
  133. .nr D 0 1
  134. .af D 1
  135. .nr E 0 1
  136. .af E 1
  137. .nr X 1 1
  138. .nr P 0 1
  139. .nr F 0 1
  140. .nr G 0 1
  141. .nr H 0 1
  142. .nr I 0 1
  143. .nr J 0 1
  144. .nr K 0 1
  145. .\"
  146. .\" **************************************************************************
  147. .\"
  148. .\" MACROS...
  149. .\"
  150. .\" ---------------------------------------------------------------------- TL
  151. .\" title for document (optional unless abstract)
  152. .\"
  153. .de TL
  154. .sp 4
  155. .ce 1000
  156. .\" reset footer. you MUST define CF, even to blank, to get the others!
  157. .if !"\*(CF"ImPoSsIbLe" .fo |\*(LF|\*(CF|\*(RF|
  158. .if \nM>0 .if \nN>0 \&\fB
  159. .\" flag bold...
  160. .if \nM>0 .if \nN>0 .nr K 1
  161. ..
  162. .\" ---------------------------------------------------------------------- AU
  163. .\" author(s) (optional, requires .TL)
  164. .\"
  165. .de AU
  166. .if \nM>0 .if \nN>0 .if \nK>0 \&\fR
  167. .if \nK>0 .nr K 0
  168. .sp 2
  169. ..
  170. .\" ---------------------------------------------------------------------- AI
  171. .\" author's institution (optional, requires .TL)
  172. .\"
  173. .de AI
  174. .if \nM>0 .if \nN>0 .if \nK>0 \&\fR
  175. .if \nK>0 .nr K 0
  176. .sp 1
  177. ..
  178. .\" ---------------------------------------------------------------------- AB
  179. .\" abstract (optional, requires .TL, .AE)
  180. .\"
  181. .de AB
  182. .if \nM>0 .if \nN>0 .if \nK>0 \&\fR
  183. .if \nK>0 .nr K 0
  184. .br
  185. .sp 2
  186. .\" check for arg to AB. can be "no" or something like "SUMMARY". if "no",
  187. .\" no title above the abstract
  188. .if !"$1"no" .if "$1"" ABSTRACT
  189. .if !"$1"no" .if !"$1"" $1
  190. .if !"$1"no" .sp 1
  191. .\" set new line length...
  192. .ce 0
  193. .if \nO=0 \{\
  194. .    ll 5.0i
  195. .    in 0.5i
  196. \}
  197. .if \nO>0 \{\
  198. .    ll 5.4i
  199. .    in 0.5i
  200. \}
  201. .tl ||- % -||
  202. ..
  203. .\" ---------------------------------------------------------------------- AE
  204. .\" abstract end (optional, requires .TL)
  205. .\"
  206. .de AE
  207. .if \nM>0 .if \nN>0 .if \nK>0 \&\fR
  208. .if \nK>0 .nr K 0
  209. .br
  210. .sp 1
  211. .\" reset...
  212. .ce 0
  213. .in 0.0i
  214. .if \nO=0 \{\
  215. .    ll 6.0i
  216. \}
  217. .if \nO>0 \{\
  218. .    ll 6.4i
  219. \}
  220. ..
  221. .\" ----------------------------------------------------------------------- SH
  222. .\" section heading, no number (optional)
  223. .\"
  224. .de SH
  225. .{R
  226. .if \nM>0 .if \nN>0 \&\fB
  227. .\" flag bold...
  228. .if \nM>0 .if \nN>0 .nr K 1
  229. .\" section title goes here, fill mode only so far...
  230. ..
  231. .\"
  232. .\" subroutine for section head reset (SH and NH)
  233. .de {R
  234. .if \nM>0 .if \nN>0 .if \nK>0 \&\fR
  235. .if \nK>0 .nr K 0
  236. .br
  237. .\" reset...
  238. .nr P 0
  239. .nr F 0 1
  240. .nr G 0 1
  241. .nr H 0 1
  242. .nr I 0 1
  243. .nr J 0 1
  244. .if \nO=0 \{\
  245. .    ll 6.0i
  246. \}
  247. .if \nO>0 \{\
  248. .    ll 6.4i
  249. \}
  250. .in 0.0i
  251. .tl ||- % -||
  252. .\" see note in TL
  253. .if !"\*(CF"ImPoSsIbLe" .fo |\*(LF|\*(CF|\*(RF|
  254. .\" .br
  255. .ce 0
  256. .sp 2
  257. .ne 4
  258. ..
  259. .\" ---------------------------------------------------------------------- NH
  260. .\" numbered section heading. arg (required) is the section level.
  261. .\" this would be MUCH simpler if the .if command supported "{...}". there is
  262. .\" a bug in nroff. i does not set the .$ number register correctly (number of
  263. .\" args for the current macro). that is the reason why level 1 must be set.
  264. .\"
  265. .de NH
  266. .{R
  267. .\" if ".NH 0", reset numbering
  268. .if $1=0 \{\
  269. .    nr A 1 1
  270. .    nr B 0 1
  271. .    nr C 0 1
  272. .    nr D 0 1
  273. .    nr E 0 1
  274. .    nr X 1 1
  275. \}
  276. .\" level 1 (two types here: ".NH" and ".NH 1"):
  277. .\" once .$ num reg is fixed, these 5 should be:  .if \n(.$=0 .nr A +1  etc.
  278. .if "$1"" \{\
  279. .    nr A +1
  280. .    nr B 0 1
  281. .    nr C 0 1
  282. .    nr D 0 1
  283. .    nr E 0 1
  284. .    nr X 1 1
  285. \}
  286. .if "$1"1" \{\
  287. .    nr A +1
  288. .    nr B 0 1
  289. .    nr C 0 1
  290. .    nr D 0 1
  291. .    nr E 0 1
  292. .    nr X 1 1
  293. \}
  294. .\" level 2 (increment B, reset lower levels):
  295. .if "$1"2" \{\
  296. .    nr B +1
  297. .    nr C 0 1
  298. .    nr D 0 1
  299. .    nr E 0 1
  300. .    nr X 2 1
  301. \}
  302. .\" level 3 (increment C, reset lower levels):
  303. .if "$1"3" \{\
  304. .    nr C +1
  305. .    nr D 0 1
  306. .    nr E 0 1
  307. .    nr X 3 1
  308. \}
  309. .\" level 4 (increment D, reset lower levels):
  310. .if "$1"4" \{\
  311. .    nr D +1
  312. .    nr E 0 1
  313. .    nr X 4 1
  314. \}
  315. .\" level 5 (increment E, no more lower levels!):
  316. .if "$1"5" \{\
  317. .    nr E +1
  318. .    nr X 5 1
  319. \}
  320. .\" print out the section number now, depending on current level...
  321. .if \nM>0 \{
  322. .    if \nN>0 .if \nX=1 \&\fB\nA.
  323. .    if \nN>0 .if \nX=2 \&\fB\nA.\nB.
  324. .    if \nN>0 .if \nX=3 \&\fB\nA.\nB.\nC.
  325. .    if \nN>0 .if \nX=4 \&\fB\nA.\nB.\nC.\nD.
  326. .    if \nN>0 .if \nX=5 \&\fB\nA.\nB.\nC.\nD.\nE.
  327. .\"    flag bold...
  328. .    if \nN>0 .nr K 1
  329. \}
  330. .if \nM=0 \{
  331. .    if \nX=1 \&\nA.
  332. .    if \nX=2 \&\nA.\nB.
  333. .    if \nX=3 \&\nA.\nB.\nC.
  334. .    if \nX=4 \&\nA.\nB.\nC.\nD.
  335. .    if \nX=5 \&\nA.\nB.\nC.\nD.\nE.
  336. \}
  337. .\" section title goes here...
  338. ..
  339. .\" ----------------------------------------------------------------------- LP
  340. .\" start a new left block paragraph (either .LP or .PP required)
  341. .\"
  342. .de LP
  343. .if \nM>0 .if \nN>0 .if \nK>0 \&\fR
  344. .if \nK>0 .nr K 0
  345. .br
  346. .\" reset...
  347. .nr P 0
  348. .nr F 0 1
  349. .nr G 0 1
  350. .nr H 0 1
  351. .nr I 0 1
  352. .nr J 0 1
  353. .tl ||- % -||
  354. .ce 0
  355. .sp 1
  356. .if \nO=0 \{\
  357. .    ll 6.0i
  358. \}
  359. .if \nO>0 \{\
  360. .    ll 6.4i
  361. \}
  362. .in 0.0i
  363. ..
  364. .\" --------------------------------